#ifndef APPPATH_H
#define APPPATH_H

#ifdef CASEXE
#	include "casino.h"
#else
#	define CASEXEEXP
#endif

#include "pathname.h"

/**
 * A class to store application directories
 */
class CASEXEEXP AppPath
{
	public:
		static void init();
		static void destroy();

		static const PathName& getExeDir();
		static const PathName& getTempDir();
		static const PathName& getPatchDir();
		static const PathName& getManifestDir();
		static const PathName& getFontDir();

		static PathName* getpExeDir();
		static PathName* getpTempDir();
		static PathName* getpPatchDir();
		static PathName* getpManifestDir();
		static PathName* getpFontDir();

	protected:
		static PathName exeDir;
		static PathName tempDir;
		static PathName patchDir;
		static PathName manifestDir;
		static PathName fontDir;
		static int32	refCount;
};

inline const PathName&
AppPath::getExeDir()
{
	return exeDir;
}

inline const PathName&
AppPath::getPatchDir()
{
	return patchDir;
}

inline const PathName&
AppPath::getTempDir()
{
	return tempDir;
}

inline const PathName&
AppPath::getManifestDir()
{
	return manifestDir;
}
inline const PathName&
AppPath::getFontDir()
{
	return fontDir;
}

inline PathName* 
AppPath::getpExeDir()
{
	return &exeDir;
}
inline PathName* 
AppPath::getpTempDir()
{
	return &tempDir;
}
inline PathName* 
AppPath::getpPatchDir()
{
	return &patchDir;
}
inline PathName* 
AppPath::getpManifestDir()
{
	return &manifestDir;
}
inline PathName* 
AppPath::getpFontDir()
{
	return &fontDir;
}

#endif
